Differences between revisions 4 and 5
Revision 4 as of 2024-06-11T18:31:41+0000
Size: 1970
Editor: YanHaoWang
Comment:
Revision 5 as of 2024-06-11T18:31:50+0000
Size: 1971
Editor: YanHaoWang
Comment:
Deletions are marked like this. Additions are marked like this.
Line 34: Line 34:
|| ypbind(8) |||| [[https://reviews.freebsd.org/D45515|45515]] || || ypbind(8) |||| [[https://reviews.freebsd.org/D45515|D45515]] ||

IPv6 support and cleanup of address family dependency in userland utilities

Project description

FreeBSD boasts a plethora of userspace command tools utilizing IPv4 network programming APIs and exhibiting address family dependency. With the emergence of IPv6 to address the limitations of IPv4, it's imperative to update these tools to utilize address-independent APIs, thereby facilitating seamless handling of both IPv4 and IPv6 connections.

Approach to solving the problem

  • Buil an IPv6-only machine and develop on it.
  • Replace the use of IPv4-specific functions like gethostby*() with their IPv6-compatible counterparts. For example, getaddrinfo().

  • Introduce conditional compilation flags (INET and INET6) to ensure compatibility with both IPv4 and IPv6.
  • Account for potential scenarios involving IPv6 hostnames with multiple addresses associated with a single hostname. Using the ai_next pointer in struct addrinfo to retrieve all addressee and do the action.

Deliverables

  1. Ensure that all command line tools (located in sbin/, usr.sbin/, bin/, and usr.bin/) are updated to support both IPv4 and IPv6 seamlessly, achieving IPv6 cleanliness.

Milestones

  1. Write the utilities for both easy and medium levels before the Mid Term Evaluation (July 8 - July 12).
  2. Complete writing all utilities before the End Term Evaluation (August 26).

Test Plan

Conduct thorough testing on an IPv6-only machine to verify the functionality and compatibility of the updated utilities. Consider implementing Automated Testing Framework (ATF) for comprehensive testing coverage.

The Code

Utility

Patch

rwhod(8)

D45124

ypbind(8)

D45515

SummerOfCode2024Projects/IPv6SupportAndCleanupOfAddressFamilyDependencyInUserlandUtilities (last edited 2024-06-11T18:31:50+0000 by YanHaoWang)